class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        //两个都为空
        if(p==null&&q==null){
            return true;
        }
        //一个为空，一个不为空
        if(p==null||q==null){
            return false;
        }
        if(p.val!=q.val){
            return false;
        }
        //p和q相同，再判断左数和右数是否都相同
        return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
    }
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
        //判断这两棵树是否相同
        // if(isSameTree(root,subRoot)){
        //     return true;
        // }
        // if(root==null){
        //     return false;
        // }
        // return (isSubtree(root.left,subRoot)||isSubtree(root.right,subRoot));

        if(isSameTree(root,subRoot)) return true;
        if(root == null) return false;
        if(isSubtree(root.left,subRoot)) return true;
        if(isSubtree(root.right,subRoot)) return true;
        return false;
    }
}